fork download
  1.  
  2. section .data
  3. hello db "101tf11flb10001", 0
  4. newline db 10
  5.  
  6. section .text
  7. global _start
  8.  
  9. _start:
  10. mov rdi, hello
  11. call vivod
  12.  
  13. call exit
  14.  
  15. vivod:
  16. push rbp
  17. push rsi
  18. push rax
  19. mov rax, 0
  20. dec rdi
  21.  
  22. .loop:
  23. call next_symbol
  24. cmp al, 0
  25. je .loop_end
  26.  
  27. cmp al, '1'
  28. jne .loop
  29.  
  30. mov rsi, rdi
  31. jmp .inner_loop
  32.  
  33. .loop_end:
  34. pop rax
  35. pop rsi
  36. pop rbp
  37.  
  38. ret
  39.  
  40. .inner_loop:
  41. call next_symbol
  42. cmp al, '0'
  43. je .inner_loop
  44.  
  45. cmp al, 0
  46. je .loop_end
  47.  
  48. cmp al, '1'
  49. jne .loop
  50.  
  51. call print_substring
  52. jmp .loop
  53.  
  54. next_symbol:
  55. inc rdi
  56. mov al, byte [rdi]
  57.  
  58. ret
  59.  
  60. print_substring:
  61. push rbx
  62. push rcx
  63.  
  64. mov rbx, rsi
  65. mov rcx, rdi
  66. sub rcx, rbx
  67. add rcx, 1
  68.  
  69. cmp rcx, 3
  70. jb .print_substring_end
  71.  
  72. call print_string
  73. call print_endl
  74.  
  75. .print_substring_end
  76. pop rcx
  77. pop rbx
  78.  
  79. ret
  80.  
  81. print_string:
  82. push rax
  83. push rdi
  84. push rsi
  85. push rdx
  86.  
  87. mov rax, 1
  88. mov rdi, 1
  89. mov rsi, rbx
  90. mov rdx, rcx
  91. syscall
  92.  
  93. pop rdx
  94. pop rsi
  95. pop rdi
  96. pop rax
  97.  
  98. ret
  99.  
  100. print_endl:
  101. push rbx
  102. push rcx
  103.  
  104. mov rbx, newline
  105. mov rcx, 1
  106. call print_string
  107.  
  108. pop rcx
  109. pop rbx
  110.  
  111. ret
  112.  
  113. mov rax, 60
  114. mov rdi, 0
  115. syscall
  116.  
Success #stdin #stdout 0.01s 5280KB
stdin
Standard input is empty
stdout
101
10001